/*
 * Copyright 2008 Johnny Jian
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.googlecode.getris.game.quadrel

import static org.junit.Assert.assertArrayEquals
import static org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.Parameterized
import org.junit.runners.Parameterized.Parameters

@RunWith (Parameterized)
class AllQuadrelsTest {

	def quadrel
	def squares
	def bound
	def offset

	@Parameters static data() {
		[
			[
				new QuadrelOne(),
				[
					[1, 1],
					[1, 1]
				],
				2,
				[left: 0, top: 0]
			],
			[
				new QuadrelTwo(),
				[
					[1, 1, 1, 1],
				],
				4,
				[left: 0, top: 1]
			],
			[
				new QuadrelThree(),
				[
					[1, 1, 1],
					[0, 1, 0]
				],
				3,
				[left: 0, top: 1]
			],
			[
				new QuadrelFour(),
				[
					[1, 1, 0],
					[0, 1, 1]
				],
				3,
				[left: 0, top: 1]
			],
			[
				new QuadrelFive(),
				[
					[0, 1, 1],
					[1, 1, 0]
				],
				3,
				[left: 0, top: 1]
			],
			[
				new QuadrelSix(),
				[
					[1, 1, 1],
					[0, 0, 1]
				],
				3,
				[left: 0, top: 1]
			],
			[
				new QuadrelSeven(),
				[
					[1, 1, 1],
					[1, 0, 0]
				],
				3,
				[left: 0, top: 1]
			]
		].collect { it as Object[] }
	}

	AllQuadrelsTest(a, b, c, d) {
		quadrel = a
		squares = b as boolean[][]
		bound = c
		offset = d
	}

	@Test void testQuadrel() {
		assertArrayEquals squares, quadrel.squares
		assertEquals bound, quadrel.bound
		assertEquals offset, quadrel.offset
	}

}
